import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
import 抽象语法树节点.抽象语法树;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class 抽象语法树构造器 {
    public static 抽象语法树 从文本中解析(String cymbol源代码) {
        var input = CharStreams.fromString(cymbol源代码);
        var lexer = new CymbolLexer(input);// 词法分析器，将输入文本转换为词法符号
        var tokens = new CommonTokenStream(lexer);// 词法符号流
        var parser = new CymbolParser(tokens);// 语法分析器
        return new 抽象语法树访问器().visit(parser.compilationUnit());
    }

    public static 抽象语法树 从文件中解析(String 文件名) throws IOException, URISyntaxException {
        var uri = new URI("file",null, 文件名,null);
        return 从文本中解析(Files.readString(Paths.get(uri)));
    }
}
